home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / sun3.md / mon / RCS / sunromvec.h,v < prev   
Encoding:
Text File  |  1989-07-14  |  21.6 KB  |  588 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.2
  10. date     89.07.14.09.23.36;  author rab;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     89.07.14.09.20.58;  author rab;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @@
  22.  
  23.  
  24. 1.2
  25. log
  26. @*** empty log message ***
  27. @
  28. text
  29. @/*
  30.  * sunromvec.h
  31.  *
  32.  * @@(#)sunromvec.h 1.7 88/02/08 SMI
  33.  * Copyright (c) 1986 by Sun Microsystems, Inc.
  34.  */
  35.  
  36. #ifndef _sunromvec_h
  37. #define    _sunromvec_h
  38. #ifndef MONSTART
  39. /*
  40.  * This file defines the entire interface between the ROM
  41.  * Monitor and the programs (or kernels) that run under it.
  42.  *
  43.  * The main Sun-2 and Sun-3 interface consists of
  44.  * the VECTOR TABLE at the front of the Boot PROM.
  45.  *
  46.  * The main Sun-4 interface consists of (1) the VECTOR TABLE and (2) the
  47.  * TRAP VECTOR TABLE, near the front of the Boot PROM.  Beginning at address
  48.  * "0x00000000", there is a 4K-byte TRAP TABLE containing 256 16-byte entries.
  49.  * Each 16-byte TRAP TABLE entry contains the executable code associated with
  50.  * that trap.  The initial 128 TRAP TABLE entries are dedicated to hardware
  51.  * traps while, the final 128 TRAP TABLE entries are reserved for programmer-
  52.  * initiated traps.  With a few exceptions, the VECTOR TABLE, which appeared
  53.  * in Sun-2 and Sun-3 firmware, follows the TRAP TABLE.  Finally, the TRAP
  54.  * VECTOR TABLE follows the VECTOR TABLE.  Each TRAP VECTOR TABLE entry
  55.  * contains the address of the trap handler, which is eventually called to
  56.  * handle the trap condition.
  57.  *
  58.  * These TABLEs are the ONLY knowledge the outside world has of this PROM.
  59.  * They are referenced by hardware and software.  Once located, NO ENTRY CAN
  60.  * BE ADDED, DELETED or RE-LOCATED UNLESS YOU CHANGE THE ENTIRE WORLD THAT
  61.  * DEPENDS ON IT!  Notice that, for Sun-4, EACH ENTRY IN STRUCTURE "sunromvec"
  62.  * MUST HAVE A CORRESPONDING ENTRY IN VECTOR TABLE "vector_table", which
  63.  * resides in file "../sun4/traptable.s".
  64.  *
  65.  * The easiest way to reference elements of these TABLEs is to say:
  66.  *      *romp->xxx
  67.  * as in:
  68.  *      (*romp->v_putchar)(c);
  69.  *
  70.  * Various entries have been added at various times.  As of the Rev N, the
  71.  * VECTOR TABLE includes an entry "v_romvec_version" which is an integer
  72.  * defining which entries in the table are valid.  The "V1:" type comments
  73.  * on each entry state which version the entry first appeared in.  In order
  74.  * to determine if the Monitor your program is running under contains the
  75.  * entry, you can simply compare the value of "v_romvec_version" to the
  76.  * constant in the comment field.  For example,
  77.  *      if (romp->v_romvec_version >= 1) {
  78.  *        reference *romp->v_memorybitmap...
  79.  *      } else {
  80.  *        running under older version of the Monitor...
  81.  *      }
  82.  * Entries which do not contain a "Vn:" comment are in all versions.
  83.  */
  84. struct sunromvec {
  85.   char               *v_initsp;        /* Initial Stack Pointer for hardware.*/
  86.   void               (*v_startmon)();  /* Initial PC for hardware.           */
  87.   int                *v_diagberr;      /* Bus error handler for diagnostics. */
  88.   /*
  89.    * Configuration information passed to standalone code and UNIX.
  90.    */
  91.   struct   bootparam **v_bootparam;    /* Information for boot-strapped pgm. */
  92.   unsigned int       *v_memorysize;    /* Total physical memory in bytes.    */
  93.   /*
  94.    * Single character input and output.
  95.    */
  96.   unsigned char      (*v_getchar)();   /* Get a character from input source. */
  97.   void               (*v_putchar)();   /* Put a character to output sink.    */
  98.   int                (*v_mayget)();    /* Maybe get a character, or "-1".    */
  99.   int                (*v_mayput)();    /* Maybe put a character, or "-1".    */
  100.   unsigned char      *v_echo;          /* Should "getchar" echo input?       */
  101.   unsigned char      *v_insource;      /* Current source of input.           */
  102.   unsigned char      *v_outsink;       /* Currrent output sink.              */
  103.   /*
  104.    * Keyboard input and frame buffer output.
  105.    */
  106.   int                (*v_getkey)();    /* Get next key if one is available.  */
  107.   void               (*v_initgetkey)();/* Initialization for "getkey".       */
  108.   unsigned int       *v_translation;   /* Keyboard translation selector.     */
  109.   unsigned char      *v_keybid;        /* Keyboard ID byte.                  */
  110.   int                *v_screen_x;      /* V2: Screen x pos (R/O).            */
  111.   int                *v_screen_y;      /* V2: Screen y pos (R/O).            */
  112.   struct keybuf      *v_keybuf;        /* Up/down keycode buffer.            */
  113.  
  114.   char               *v_mon_id;        /* Revision level of the monitor.     */
  115.   /*
  116.    * Frame buffer output and terminal emulation.
  117.    */
  118.   void               (*v_fwritechar)();/* Write a character to frame buffer. */
  119.   int                *v_fbaddr;        /* Address of frame buffer.           */
  120.   char               **v_font;         /* Font table for frame buffer.       */
  121.   void               (*v_fwritestr)(); /* Quickly write a string to frame    *
  122.                                         * buffer.                            */
  123.   /*
  124.    * Re-boot interface routine.  Resets and re-boots system.  No return.
  125.    */
  126.   void               (*v_boot_me)();   /* For example, boot_me("xy()vmunix").*/
  127.   /*
  128.    * Command line input and parsing.
  129.    */
  130.   unsigned char      *v_linebuf;       /* The command line buffer.           */
  131.   unsigned char      **v_lineptr;      /* Current pointer into "linebuf".    */
  132.   int                *v_linesize;      /* Length of current command line.    */
  133.   void               (*v_getline)();   /* Get a command line from user.      */
  134.   unsigned char      (*v_getone)();    /* Get next character from "linebuf". */
  135.   unsigned char      (*v_peekchar)();  /* Peek at next character without     *
  136.                                         * advancing pointer.                 */
  137.   int                *v_fbthere;       /* Is there a frame buffer or not?    *
  138.                                         * 1=yes.                             */
  139.   int                (*v_getnum)();    /* Grab hex number from command line. */
  140.   /*
  141.    * Phrase output to current output sink.
  142.    */
  143.   int                (*v_printf)();    /* Similar to Kernel's "printf".      */
  144.   void               (*v_printhex)();  /* Format N digits in hexadecimal.    */
  145.  
  146.   unsigned char      *v_leds;          /* RAM copy of LED register value.    */
  147.   void               (*v_set_leds)();  /* Sets LEDs and RAM copy             */
  148.   /*
  149.    * The nmi related information.
  150.    */
  151.   void               (*v_nmi)();       /* Address for the Sun-4 level 14     *
  152.                                         * interrupt vector.                  */
  153.   void               (*v_abortent)();  /* Entry for keyboard abort.          */
  154.   int                *v_nmiclock;      /* Counts in milliseconds.            */
  155.  
  156.   int                *v_fbtype;        /* Frame buffer type: see <sun/fbio.h>*/
  157.   /*
  158.    * Assorted other things.
  159.    */
  160.   unsigned int       v_romvec_version; /* Version number of "romvec".        */
  161.   struct   globram   *v_gp;            /* Monitor's global variables.        */
  162.   struct zscc_device *v_keybzscc;      /* Address of keyboard in use.        */
  163.   int                *v_keyrinit;      /* Millisecs before keyboard repeat.  */
  164.   unsigned char      *v_keyrtick;      /* Millisecs between repetitions.     */
  165.   unsigned int       *v_memoryavail;   /* V1: Size of usable main memory.    */
  166.   long               *v_resetaddr;     /* where to jump on a RESET trap.     */
  167.   long               *v_resetmap;      /* Page map entry for "resetaddr".    */
  168.   void               (*v_exit_to_mon)();/* Exit from user program.           */
  169.   unsigned char      **v_memorybitmap; /* V1: Bit map of main memory or NULL.*/
  170.   void               (*v_setcxsegmap)();/* Set segment in any context.       */
  171.   void               (**v_vector_cmd)();/* V2: Handler for the 'w' (vector)  *
  172.                                         * command.                           */
  173. #if defined(SUN4) || (sun4)
  174.   unsigned long      *v_exp_trap_signal;/* V3: Location of the expected trap *
  175.                                         * signal.  Was trap expected or not? */
  176.   unsigned long      *v_trap_vector_table_base; /* V3: Address of the TRAP   *
  177.                                         * VECTOR TABLE which exists in RAM.  */
  178. #endif /* defined(SUN4) || (sun4) */
  179.   int                dummy1z;
  180.   int                dummy2z;
  181.   int                dummy3z;
  182.   int                dummy4z;
  183. };
  184.  
  185. /*
  186.  * THE FOLLOWING CONSTANT, "romp" MUST BE CHANGED ANYTIME THE VALUE OF
  187.  * "PROM_BASE" IN file "../sun2/cpu.addrs.h" (for Sun-2), file
  188.  * "../sun3/cpu.addrs.h" (for Sun-3) or file "../sun4/cpu.addrs.h" (for Sun-4)
  189.  * IS CHANGED.  IT IS CONSTANT HERE SO THAT EVERY MODULE WHICH NEEDS AN ADDRESS
  190.  * OUT OF STRUCTURE "sunromvec" DOES NOT HAVE TO INCLUDE the appropriate
  191.  * "cpu.addrs.h" file.
  192.  *
  193.  * Since Sun-4 supports 32-bit addressing, rather than 28-bit addressing as is
  194.  * supported by Sun-3, the value of "romp" had to be increased.  Furthermore,
  195.  * since the VECTOR TABLE, which appeared at the beginning of Sun-3 firmware,
  196.  * now appears after the 4K-byte TRAP TABLE in Sun-4 firmware, the value of
  197.  * "romp" was incresed by an additional 4K.
  198.  *
  199.  * If the value of "romp" is changed, several other changes are required.
  200.  * A complete list of required changes is given below.
  201.  *    (1) Makefile:             RELOC=
  202.  *    (2) ../sun2/cpu.addrs.h:  #define PROM_BASE (for Sun-2)
  203.  * or
  204.  *    (2) ../sun3/cpu.addrs.h:  #define PROM_BASE (for Sun-3)
  205.  * or
  206.  *    (2) ../sun4/cpu.addrs.h:  #define PROM_BASE (for Sun-4)
  207.  *
  208.  */
  209. #if defined(SUN4) || (sun4)
  210. #ifdef CACHE
  211. #define romp ((struct sunromvec *) 0x00001000) /* Used when running the      *
  212.                                                 * firmware out of the cache. */
  213. #else /* CACHE */
  214. #define romp ((struct sunromvec *) 0xFFE81000) /* Used when running the  *
  215.                                                 * firmware out of ROM.   */
  216. #endif /* CACHE */
  217. #else /* defined(SUN4) || (sun4) */
  218. /*
  219.  * Notce that the value of "romp" will be
  220.  * truncated based on the running hardware:
  221.  *   Sun-2   0x00EF0000
  222.  *   Sun-3   0x0FEF0000
  223.  * This was deliberately done for Sun-3 so that programs using this header
  224.  * file (with the Sun-3 support) would continue to run on Sun-2 systems.
  225.  */
  226. #define romp ((struct sunromvec *) 0x0FEF0000)
  227. #endif /* defined(SUN4) || (sun4) */
  228.  
  229. /*
  230.  * The possible values for "*romp->v_insource" and "*romp->v_outsink" are
  231.  * listed below.  These may be extended in the future.  Your program should
  232.  * cope with this gracefully (e.g. by continuing to vector through the ROM
  233.  * I/O routines if these are set in a way you don't understand).
  234.  */
  235. #define INKEYB    0 /* Input from parallel keyboard. */
  236. #define INUARTA   1 /* Input or output to Uart A.    */
  237. #define INUARTB   2 /* Input or output to Uart B.    */
  238. #define OUTSCREEN 0 /* Output to frame buffer.       */
  239. #define OUTUARTA  1 /* Input or output to Uart A.    */
  240. #define OUTUARTB  2 /* Input or output to Uart B.    */
  241.  
  242. /*
  243.  * Structure set up by the boot command to pass arguments to the booted program.
  244.  */
  245. struct bootparam {
  246.   char            *bp_argv[8];     /* String arguments.                     */
  247.   char            bp_strings[100]; /* String table for string arguments.    */
  248.   char            bp_dev[2];       /* Device name.                          */
  249.   int             bp_ctlr;         /* Controller Number.                    */
  250.   int             bp_unit;         /* Unit Number.                          */
  251.   int             bp_part;         /* Partition/file Number.                */
  252.   char            *bp_name;        /* File name.  Points into "bp_strings". */
  253.   struct boottab  *bp_boottab;     /* Points to table entry for device.     */
  254. };
  255.  
  256. /*
  257.  * This table entry describes a device.  It exists in the PROM.  A pointer to
  258.  * it is passed in "bootparam".  It can be used to locate ROM subroutines for
  259.  * opening, reading, and writing the device.  NOTE: When using this interface,
  260.  * only ONE device can be open at any given time.  In other words, it is not
  261.  * possible to open a tape and a disk at the same time.
  262.  */
  263. struct boottab {
  264.   char           b_dev[2];        /* Two character device name.          */
  265.   int            (*b_probe)();    /* probe(): "-1" or controller number. */
  266.   int            (*b_boot)();     /* boot(bp): "-1" or start address.    */
  267.   int            (*b_open)();     /* open(iobp): "-"1 or "0".            */
  268.   int            (*b_close)();    /* close(iobp): "-"1 or "0".           */
  269.   int            (*b_strategy)(); /* strategy(iobp, rw): "-1" or "0".    */
  270.   char           *b_desc;         /* Printable string describing device. */
  271.   struct devinfo *b_devinfo;      /* Information to configure device.    */
  272. };
  273.  
  274. enum MAPTYPES { /* Page map entry types. */
  275.   MAP_MAINMEM,
  276.   MAP_OBIO,
  277.   MAP_MBMEM,
  278.   MAP_MBIO,
  279.   MAP_VME16A16D,
  280.   MAP_VME16A32D,
  281.   MAP_VME24A16D,
  282.   MAP_VME24A32D,
  283.   MAP_VME32A16D,
  284.   MAP_VME32A32D
  285. };
  286.  
  287. /*
  288.  * This table gives information about the resources needed by a device.
  289.  */
  290. struct devinfo {
  291.   unsigned int      d_devbytes;   /* Bytes occupied by device in IO space.  */
  292.   unsigned int      d_dmabytes;   /* Bytes needed by device in DMA memory.  */
  293.   unsigned int      d_localbytes; /* Bytes needed by device for local info. */
  294.   unsigned int      d_stdcount;   /* How many standard addresses.           */
  295.   unsigned long     *d_stdaddrs;  /* The vector of standard addresses.      */
  296.   enum     MAPTYPES d_devtype;    /* What map space device is in.           */
  297.   unsigned int      d_maxiobytes; /* Size to break big I/O's into.          */
  298. };
  299.  
  300. /*
  301.  * This following defines the memory map interface
  302.  * between the ROM Monitor and the Unix kernel.
  303.  *
  304.  * The ROM Monitor requires that nobody mess with parts of virtual memory if
  305.  * they expect any ROM Monitor services.  The following rules apply to all of
  306.  * the virtual addresses between MONSTART and MONEND.
  307.  *   (1) Do not write to these addresses.
  308.  *   (2) Do not read from (depend on the contents of) these addresses, except
  309.  *       as documented here or in <mon/sunromvec.h>.
  310.  *   (3) Do not re-map these addresses.
  311.  *   (4) Do not change or double-map the pmegs that these addresses map through.
  312.  *   (5) Do not change or double-map the main memory that these addresses map
  313.  *       to.
  314.  *   (6) You are free to change or double-map I/O devices which these addresses
  315.  *       map to.
  316.  *   (7) These rules apply in all map contexts.
  317.  */
  318. #if defined(SUN2) || defined(sun2)
  319. #define MONSTART 0x00E00000
  320. #define MONEND   0x00F00000
  321. #endif /* defined(SUN2) || defined(sun2) */
  322.  
  323. #if defined(SUN3) || defined(sun3)
  324. #define MONSTART 0x0FE00000
  325. #define MONEND   0x0FF00000
  326. #endif /* defined(SUN3) || defined(sun3) */
  327.  
  328. #if defined(SUN4) || (sun4)
  329. #define MONSTART 0xFFD00000
  330. #define MONEND   0xFFF00000
  331. #endif /* defined(SUN4) || (sun4) */
  332.  
  333. #if !defined(SUN4) && !defined(sun4)
  334. /*
  335.  * The one page at MONSHORTPAGE must remain mapped to the same piece
  336.  * of main memory.  The pmeg used to map it there can be changed if so
  337.  * desired.  This page should not be read from or written in.  It is
  338.  * used for ROM Monitor globals, since it is addressable with short
  339.  * absolute instructions.  (We give a 32-bit value below so the
  340.  * compiler/assembler will use absolute short addressing.  The hardware
  341.  * will accept either 0 or 0xF as the top 4 bits.)
  342.  */
  343. #define MONSHORTPAGE 0xFFFFE000
  344. #define MONSHORTSEG  0xFFFE0000
  345. #endif /* !defined(SUN4) && !defined(sun4) */
  346.  
  347. #if defined(SUN4) || (sun4)
  348. /*
  349.  * The one page at GLOBAL_PAGE must remain mapped to the same piece of main
  350.  * memory.  The pmeg used to map it there can be changed if desired.  This page
  351.  * should not be read from or written into.  It is used for Monitor globals.
  352.  */
  353. #define GLOBAL_PAGE 0xFFEFE000
  354. #endif /* defined(SUN4) || (sun4) */
  355.  
  356. /*
  357.  * For virtual addresses outside the above range, you can re-map the addresses
  358.  * as desired (but see MONSHORTPAGE).  Any pmeg not referenced by segments
  359.  * between MONSTART and MONEND can be used freely (but see MONSHORTPAGE).
  360.  * When a stand-alone program is booted, available main memory will be mapped
  361.  * contiguously, using ascending physical page addresses, starting at virtual
  362.  * address "0x00000000".  The complete set of available memory  may not be
  363.  * mapped due to a lack of pmegs.  The complete set is defined by globals
  364.  * "v_memorysize", "v_memoryavail" and "v_memorybitmap".  For non-Sun-4
  365.  * machines, we guarantee that at least MAINMEM_MAP_SIZE page map entries
  366.  * will be available for mapping starting from location "0x0".  For Sun-4,
  367.  * (at least at the time of Sunrise and Cobra), we guarantee that at least
  368.  * 8 megabytes will be mapped beginning with location "0x0".  When a
  369.  * stand-alone program is booted, the number of segment table entries required
  370.  * to map DVMA_MAP_SIZE bytes will be allocated.  The corresponding pages will
  371.  * be mapped into DVMA space.
  372.  */
  373. #if defined(SUN2) || defined(sun2)
  374. #define MAINMEM_MAP_SIZE 0x00600000
  375. #define DVMA_MAP_SIZE    0x00080000
  376. #endif /* defined(SUN2) || defined(sun2) */
  377.  
  378. #if defined(SUN3) || defined(sun3)
  379. #define MAINMEM_MAP_SIZE 0x00800000
  380. #define DVMA_MAP_SIZE    0x00080000
  381. #endif /* defined(SUN3) || defined(sun3) */
  382.  
  383. #if defined(SUN4) ||(sun4)
  384. #define MAINMEM_MAP_SIZE 0x00800000
  385. #define DVMA_MAP_SIZE    0x00080000
  386. #endif /* defined(SUN4) ||(sun4) */
  387.  
  388. /*
  389.  * The following are included for compatability with previous versions
  390.  * of this header file.  Names containing capital letters have been
  391.  * changed to conform with "Bill Joy Normal Form".  This section provides
  392.  * the translation between the old and new names.  It can go away once
  393.  * Sun-1 applications have been converted over.
  394.  */
  395. #define RomVecPtr       romp
  396. #define v_SunRev        v_mon_id
  397. #define v_MemorySize    v_memorysize
  398. #define v_EchoOn        v_echo
  399. #define v_InSource      v_insource
  400. #define v_OutSink       v_outsink
  401. #define v_InitGetkey    v_initgetkey
  402. #define v_KeybId        v_keybid
  403. #define v_Keybuf        v_keybuf
  404. #define v_FBAddr        v_fbaddr
  405. #define v_FontTable     v_font
  406. #define v_message       v_printf
  407. #define v_KeyFrsh       v_nmi
  408. #define AbortEnt        v_abortent
  409. #define v_RefrCnt       v_nmiclock
  410. #define v_GlobPtr       v_gp
  411. #define v_KRptInitial   v_keyrinit
  412. #define v_KRptTick      v_keyrtick
  413. #define v_ExitOp        v_exit_to_mon
  414. #define v_fwrstr        v_fwritestr
  415. #define v_linbuf        v_linebuf
  416.  
  417. #endif /* MONSTART */
  418. #endif /* _sunromvec_h */
  419. @
  420.  
  421.  
  422. 1.1
  423. log
  424. @Initial revision
  425. @
  426. text
  427. @d12 3
  428. a14 3
  429.  * This file defines the entire interface between the ROM 
  430.  * Monitor and the programs (or kernels) that run under it.  
  431.  * 
  432. d17 2
  433. a18 2
  434.  * 
  435.  * The main Sun-4 interface consists of (1) the VECTOR TABLE and (2) the 
  436. d25 3
  437. a27 3
  438.  * in Sun-2 and Sun-3 firmware, follows the TRAP TABLE.  Finally, the TRAP 
  439.  * VECTOR TABLE follows the VECTOR TABLE.  Each TRAP VECTOR TABLE entry 
  440.  * contains the address of the trap handler, which is eventually called to 
  441. d34 1
  442. a34 1
  443.  * MUST HAVE A CORRESPONDING ENTRY IN VECTOR TABLE "vector_table", which 
  444. d36 1
  445. a36 1
  446.  * 
  447. d43 2
  448. a44 2
  449.  * VECTOR TABLE includes an entry "v_romvec_version" which is an integer 
  450.  * defining which entries in the table are valid.  The "V1:" type comments 
  451. d46 2
  452. a47 2
  453.  * to determine if the Monitor your program is running under contains the 
  454.  * entry, you can simply compare the value of "v_romvec_version" to the 
  455. d60 2
  456. a61 2
  457.   /* 
  458.    * Configuration information passed to standalone code and UNIX. 
  459. d65 1
  460. a65 1
  461.   /* 
  462. d75 1
  463. a75 1
  464.   /* 
  465. d87 1
  466. a87 1
  467.   /* 
  468. d95 2
  469. a96 2
  470.   /* 
  471.    * Re-boot interface routine.  Resets and re-boots system.  No return. 
  472. d99 1
  473. a99 1
  474.   /* 
  475. d112 1
  476. a112 1
  477.   /* 
  478. d120 2
  479. a121 2
  480.   /* 
  481.    * The nmi related information. 
  482. d129 1
  483. a129 1
  484.   /* 
  485. d150 1
  486. a150 1
  487. #endif defined(SUN4) || (sun4)
  488. d158 2
  489. a159 2
  490.  * THE FOLLOWING CONSTANT, "romp" MUST BE CHANGED ANYTIME THE VALUE OF 
  491.  * "PROM_BASE" IN file "../sun2/cpu.addrs.h" (for Sun-2), file 
  492. d166 1
  493. a166 1
  494.  * supported by Sun-3, the value of "romp" had to be increased.  Furthermore, 
  495. d185 1
  496. a185 1
  497. #else CACHE
  498. d188 2
  499. a189 2
  500. #endif CACHE
  501. #else defined(SUN4) || (sun4)
  502. d191 1
  503. a191 1
  504.  * Notce that the value of "romp" will be 
  505. d199 1
  506. a199 1
  507. #endif defined(SUN4) || (sun4)
  508. d202 1
  509. a202 1
  510.  * The possible values for "*romp->v_insource" and "*romp->v_outsink" are 
  511. d230 2
  512. a231 2
  513.  * it is passed in "bootparam".  It can be used to locate ROM subroutines for 
  514.  * opening, reading, and writing the device.  NOTE: When using this interface, 
  515. d247 3
  516. a249 3
  517.   MAP_MAINMEM, 
  518.   MAP_OBIO, 
  519.   MAP_MBMEM, 
  520. d251 1
  521. a251 1
  522.   MAP_VME16A16D, 
  523. d253 1
  524. a253 1
  525.   MAP_VME24A16D, 
  526. d255 1
  527. a255 1
  528.   MAP_VME32A16D, 
  529. d260 1
  530. a260 1
  531.  * This table gives information about the resources needed by a device.  
  532. d276 1
  533. a276 1
  534.  * The ROM Monitor requires that nobody mess with parts of virtual memory if 
  535. d284 1
  536. a284 1
  537.  *   (5) Do not change or double-map the main memory that these addresses map 
  538. d293 1
  539. a293 1
  540. #endif defined(SUN2) || defined(sun2)
  541. d298 1
  542. a298 1
  543. #endif defined(SUN3) || defined(sun3)
  544. d303 1
  545. a303 1
  546. #endif defined(SUN4) || (sun4)
  547. d317 1
  548. a317 1
  549. #endif !defined(SUN4) && !defined(sun4)
  550. d321 1
  551. a321 1
  552.  * The one page at GLOBAL_PAGE must remain mapped to the same piece of main 
  553. d326 1
  554. a326 1
  555. #endif defined(SUN4) || (sun4)
  556. d329 3
  557. a331 3
  558.  * For virtual addresses outside the above range, you can re-map the addresses 
  559.  * as desired (but see MONSHORTPAGE).  Any pmeg not referenced by segments 
  560.  * between MONSTART and MONEND can be used freely (but see MONSHORTPAGE).  
  561. d334 2
  562. a335 2
  563.  * address "0x00000000".  The complete set of available memory  may not be  
  564.  * mapped due to a lack of pmegs.  The complete set is defined by globals 
  565. d338 1
  566. a338 1
  567.  * will be available for mapping starting from location "0x0".  For Sun-4, 
  568. d340 1
  569. a340 1
  570.  * 8 megabytes will be mapped beginning with location "0x0".  When a 
  571. d342 1
  572. a342 1
  573.  * to map DVMA_MAP_SIZE bytes will be allocated.  The corresponding pages will 
  574. d348 1
  575. a348 1
  576. #endif defined(SUN2) || defined(sun2)
  577. d353 1
  578. a353 1
  579. #endif defined(SUN3) || defined(sun3)
  580. d358 1
  581. a358 1
  582. #endif defined(SUN4) ||(sun4)
  583. d389 2
  584. a390 2
  585. #endif MONSTART
  586. #endif _sunromvec_h
  587. @
  588.